Postavljanje jednacina
syms Di1 L1 L2 L U L12 R R1 R2 i1 u1 u2 uR1 ug T t
jednacine = [ug == uR1 + u1, u1 == L1 * Di1, u2 == L12 * Di1, uR1 == R1 * i1]
jednacine = 
Jednacine stanja
jednacineIzvoda = eliminate(jednacine, [u1, u2, uR1])
jednacineIzvoda = 
assume([L1, L2, L12, U, R1, t], 'real')
assumeAlso(0 < R1 & 0 < L1 & 0 < L2 & 0 < L12 & 0 < L & 0 < U)
jednacineStanja = solve(jednacineIzvoda, Di1)
jednacineStanja =

Resavanje diferencijalne jednacine
promenljiveStanja = i1 == i1(t)
promenljiveStanja(t) = 
zamene = [R1 == R, R2 == 2*R, L1 == L, L2 == 4*L, L12 == (1/2)*sqrt(L*4*L)]
zamene = 
pobuda = ug == heaviside(t)
pobuda = 
jednacineStanjaFun = subs(diff(i1(t)) == jednacineStanja,...
lhs([promenljiveStanja pobuda zamene]),...
rhs([promenljiveStanja pobuda zamene]))
jednacineStanjaFun =

resenjeDiff = dsolve(jednacineStanjaFun, i1(0) == 0, 'IgnoreAnalyticConstraints', false)
resenjeDiff =

Grinova funkcija
g_i1(t) = simplify(diff(resenjeDiff))
g_i1(t) =

Konvolucioni integral
zameneLRT = [T == L/R, L12 == L]
zameneLRT =

i1_1(t) = simplify(int( (U*tau/T)*g_i1(t-tau), tau, 0, t))
i1_1(t) =

assume((T > 0) & (T < t))
i1_2(t) = simplify( int((U*tau/T)*g_i1(t-tau), tau, 0, T))
i1_2(t) =

u2_1(t) = simplify(subs(L12*diff(i1_1(t)), lhs(zameneLRT), rhs(zameneLRT)))
u2_1(t) =

u2_2(t) = simplify(subs(L12*diff(i1_2(t)), lhs(zameneLRT), rhs(zameneLRT)) )
u2_2(t) =

u2(t) = (piecewise((t<0), 0, (0<=t)&(t<T), u2_1(t), (t>=T), u2_2(t) ))
u2(t) =

Crtanje grafika
vrednosti = [R == 1000, L == 1e-3, T == 1e-6, U == 10]
vrednosti =

fplot(t, subs(u2(t), lhs(vrednosti), rhs(vrednosti)), [0 5e-6] )